The present disclosure relates to improvements in the identification of additional code changes that may be necessary when updating software for a target goal.
Making some types of changes to a complex software product often requires multiple related code changes to a number of related software programs or modules. For example, adding a new start up parameter or new statistics fields may necessitate multiple programs or modules being changed. Making such a change often requires a deep technical knowledge of the complete set of changes that will be required for a particular piece of software. For a long lived software product, which may be in use by downstream users for multiple years or even decades, retaining skilled software developers or coders with deep technical knowledge of the software product is always a challenge. For example, on a long lived software product, the original software developers or coders that created the product may no longer be available to assist in identifying the additional software changes that may be necessary to implement a particular code change.
One common way that may be utilized in an attempt to retain the knowledge of code relationships in a software product is the use of robust documentation by the subject matter expert, e.g., the coder developing or modifying each piece of code. Unfortunately, such documentation is often out of date or incomplete.
In addition, some portions of a software product may not require any changes for a long period of time. Since the individual coders do not make changes in these portions frequently it is often easy for them to overlook one or more corresponding programs or modules which may also need to be changed due to their unfamiliarity with these portions of the software product. This lack of familiarity may result in defects or bugs being introduced into the product which may subsequently require substantial effort to identify, diagnose, and correct.